// app/items/page.tsx (업데이트) import * as React from "react" import { type SearchParams } from "@/types/table" import { Skeleton } from "@/components/ui/skeleton" import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton" import { Shell } from "@/components/shell" import { searchParamsCache } from "@/lib/items/validations" import { getItems } from "@/lib/items/service" import { ItemsTable } from "@/lib/items/table/items-table" import { ViewModeToggle } from "@/components/data-table/view-mode-toggle" interface IndexPageProps { searchParams: Promise } export default async function IndexPage(props: IndexPageProps) { const searchParams = await props.searchParams const search = searchParamsCache.parse(searchParams) // pageSize 기반으로 모드 자동 결정 const isInfiniteMode = search.perPage >= 1_000_000 // 페이지네이션 모드일 때만 서버에서 데이터 가져오기 // 무한 스크롤 모드에서는 클라이언트에서 SWR로 데이터 로드 const promises = isInfiniteMode ? undefined : Promise.all([ getItems(search), // searchParamsCache의 결과를 그대로 사용 ]) return (

패키지 정보

S-EDP로부터 수신된 패키지 정보이며 PR 전 입찰, 견적에 사용되며 벤더 데이터, 문서와 연결됩니다.

}> {/* DateRangePicker 등 추가 컴포넌트 */} } > {/* 통합된 ItemsTable 컴포넌트 사용 */}
) }